import http from 'wechat-http'
http.baseURL = 'https://live-api.itheima.net'
// 配置响应拦截器
http.intercept.response = async ({ statusCode, data, config }) => {
  // statusCode为状态码
  // config 是调用接口的参数
  // console.log(res)
  if (statusCode === 401) {
    // refreshToken 过期的情况
    if (config.url.includes('/refreshToken')) {
      // 读取当前离历史栈
      const pageStack = getCurrentPages()
      // 取出当前页面路径，登录成功跳转到该页面
      const currentPage = pageStack[pageStack.length - 1]
      // 跳转到登录页面
      wx.redirectTo({
        url: '/pages/login/index?returnUrl=/' + currentPage.route
      })
      return data
    }
    // 调用刷新token接口
    const res = await http({
      url: '/refreshToken',
      method: 'POST',
      header: {
        Authorization: getApp().refreshToken
      }
    })
    // 更新 token 和 refresh_token
    getApp().setToken(res.data.token, res.data.refreshToken)

    // 将用户原本要调用的接口重新请求一次， 并将结果返回
    const result = await wx.http({
      ...config
    })
    return result
  }
  // 过滤接口返回的数据
  return data
}
http.intercept.request = (params) => {
  console.log(params)
  const token = getApp().token
  // 如果config中没有header 将header设置为 {}
  params.header = params.header || {}
  // 添加Authorization 请求头值为token
  if (token && !params.url.includes('/refreshToken')) params.header.Authorization = token
  // 返回params
  return params
}
// 挂载方法到全局
wx.http = http
// 模块导出
export default http